/*
 * ========================================
 * 清屏功能验收测试程序
 * ========================================
 * 
 * 这个程序专门用于测试和验收清屏功能
 * 会输出大量内容填满屏幕，然后执行清屏
 */

#include "../include/types.h"
#include "../include/printf.h"

// UART初始化函数声明
void uart_init(void);

// 填满屏幕的函数
void fill_screen(void)
{
    printf("=== 屏幕填充测试 ===\n");
    printf("正在用内容填满屏幕...\n");
    printf("\n");
    
    // 输出30行内容填满屏幕
    for (int i = 1; i <= 30; i++) {
        printf("第%2d行: 这是填充内容，用来测试清屏功能 - 行号 %d\n", i, i);
    }
    
    printf("\n");
    printf("========================================\n");
    printf("屏幕已填满！现在你应该看到很多行内容\n");
    printf("========================================\n");
    printf("\n");
}

// 清屏测试函数
void test_clear(void)
{
    printf(">>> 准备清屏，请仔细观察屏幕变化 <<<\n");
    printf("倒计时：\n");
    
    // 倒计时
    for (int i = 5; i >= 1; i--) {
        printf("  %d 秒后清屏...\n", i);
        for (volatile int j = 0; j < 3000000; j++); // 延时1秒
    }
    
    printf(">>> 开始清屏！ <<<\n");
    
    // 执行清屏
    clear_screen();
    
    // 清屏后的确认信息
    printf("========================================\n");
    printf("           清屏功能验收测试\n");
    printf("========================================\n");
    printf("\n");
    printf("✅ 如果你看到这条消息，说明清屏功能正常工作！\n");
    printf("✅ 屏幕上的所有内容都已被清除。\n");
    printf("✅ 清屏功能验收通过！\n");
    printf("\n");
    printf("========================================\n");
}

int main(void)
{
    // 初始化UART
    uart_init();
    
    // 输出启动信息
    printf("=== 清屏功能验收测试程序 ===\n");
    printf("版本: 验收专用\n");
    printf("\n");
    
    // 第一次测试
    printf(">>> 第一次清屏测试 <<<\n");
    fill_screen();
    test_clear();
    
    // 等待用户观察
    printf("按任意键继续第二次测试...\n");
    for (volatile int i = 0; i < 10000000; i++);
    
    // 第二次测试
    printf("\n>>> 第二次清屏测试 <<<\n");
    fill_screen();
    test_clear();
    
    // 最终确认
    printf("=== 清屏功能验收完成 ===\n");
    printf("如果两次测试都成功清屏，说明功能正常！\n");
    printf("\n");
    
    // 进入无限循环
    while(1) {
        // 什么都不做
    }
    
    return 0;
}
